// #include <assert.h>
// #include <stdio.h>
// #include <stdlib.h>
// #include "windows.h"
//
// typedef struct LinkNode {
//     int data;
//     struct LinkNode* next;
// } LinkNode;
//
// typedef struct LinkList {
//     LinkNode* head;
// } LinkList;
//
// LinkList* LinkInit() {
//     LinkList* list = (LinkList*)malloc(sizeof(LinkList));
//     if (list == NULL) {
//         exit(1);
//     }
//     list->head = (LinkNode*)malloc(sizeof(LinkNode));
//     list->head->next = NULL;
//     return list;
// }
//
// void LinkInsert(LinkList* list, int data) {
//     LinkNode* newNode = (LinkNode*)malloc(sizeof(LinkNode));
//     if (newNode == NULL) {
//         perror("malloc");
//         exit(1);
//     }
//     newNode->data = data;
//     newNode->next = NULL;
//     LinkNode* current = list->head;
//     while (current->next != NULL) {
//         current = current->next;
//     }
//     current->next = newNode;
// }
//
// void printLinkList(LinkList* list) {
//     LinkNode* current = list->head->next;
//     while (current != NULL) {
//         printf("%d ", current->data);
//         current = current->next;
//     }
//     printf("\n");
// }
//
// void FreeLinkList(LinkList* list) {
//     if (list == NULL) {
//         return;
//     }
//     LinkNode* current = list->head;
//     while (current != NULL) {
//         LinkNode* next = current->next;
//         free(current);
//         current = next;
//     }
//     free(list);
// }
//
// int ZZZ(LinkList* A,LinkList* B) {
//     assert(A&&B);
//     LinkNode* a=A->head->next;
//     LinkNode* b=B->head->next;
//     LinkNode* prev=A->head->next;
//     while (a&&b) {
//         if(a->data==b->data) {
//             a=a->next;
//             b=b->next;
//         }else {
//             prev=prev->next;
//             a=prev;
//             b=B->head->next;
//         }
//     }
//     if(b==NULL) {
//         return 1;
//     }else {
//         return -1;
//     }
// }
//
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     LinkList* A = LinkInit();
//     LinkList* B = LinkInit();
//     LinkList* C= LinkInit();
//
//     LinkInsert(A, 1);
//     LinkInsert(A, 2);
//     LinkInsert(A, 3);
//     LinkInsert(A, 4);
//     LinkInsert(A, 5);
//     LinkInsert(A, 6);
//     LinkInsert(A, 7);
//     LinkInsert(A, 8);
//
//     LinkInsert(B, 2);
//     LinkInsert(B, 3);
//     LinkInsert(B, 4);
//     LinkInsert(B, 5);
//     LinkInsert(B, 6);
//
//     LinkInsert(C,2);
//     LinkInsert(C,3);
//     LinkInsert(C,4);
//     LinkInsert(C,1);
//     LinkInsert(C,4);
//
//     int result1=ZZZ(A,B);
//     if(result1>0) {
//         printf("是子链\n");
//     }else {
//         printf("不是子链\n");
//     }
//
//     int result2=ZZZ(A,C);
//     if(result2>0) {
//         printf("是子链\n");
//     }else {
//         printf("不是子链\n");
//     }
//
//     FreeLinkList(A);
//     FreeLinkList(B);
//     FreeLinkList(C);
//
//     return 0;
// }